﻿function getRequestObject()
{
	var XMLHttpRequestObject = false;
	if (window.XMLHttpRequest) {
		try {
			XMLHttpRequestObject = new XMLHttpRequest();
		}
		catch (e) {
			XMLHttpRequestObject = false;
		}
	} else if (window.ActiveXObject) {
		try {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (e) {
			XMLHttpRequestObject = false;
		}
	}
	
	return XMLHttpRequestObject;
}


/*
	Formulaire d'ajout
*/
function exist_pseudo(pseudo) {
	var XMLHttpRequestObject = getRequestObject();
	
	if(XMLHttpRequestObject) {
		XMLHttpRequestObject.open("POST", "getContributeur.php", false);
		XMLHttpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		XMLHttpRequestObject.send("pseudo="+pseudo);
		while (!(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200));
		if (XMLHttpRequestObject.responseText == "null"){
			return false;
		} else {
			return true;
		}
	}
	
	return false;
}

function verifChampsAjout()
{
	var form = document.form_ajout;
	
	var date_split = form.naissance_ajout.value.split("-");
	var year = 1;
	var month = 1;
	var day = 1;
	
	if (date_split.length == 3)
	{
		var year = parseInt(date_split[0]);
		var month = parseInt(date_split[1]);
		var day = parseInt(date_split[2]);
	}
	
	var try_date = new Date(year, month, day);
	
	var nodeList = document.querySelectorAll(".erreur");
	for (var i = 0, length = nodeList.length; i < length; i++) {
		document.getElementById('texte').removeChild(nodeList[i]);
	}
	
	nodeList = document.querySelectorAll(".confirm");
	for (var i = 0, length = nodeList.length; i < length; i++) {
		document.getElementById('texte').removeChild(nodeList[i]);
	}
	
	var nouveau_p = document.createElement('p');
	nouveau_p.className = "erreur";
	var nouveau_txt = document.createTextNode("");
	var erreur = true;

	if (form.ident_ajout.value == "" ||
		form.mdp_ajout.value == "" ||
		form.Confirmmdp_ajout.value == "" ||
		form.nom_ajout.value == "" ||
		form.prenom_ajout.value == "" ||
		form.naissance_ajout.value == "")
	{
		nouveau_txt = document.createTextNode('Tous les champs doivent être remplis.');
	}
	else if (form.ident_ajout.value.length > 50)
	{
		nouveau_txt = document.createTextNode("L'identifiant du compte ne doit pas dépasser 50 caractères.");
		form.ident_ajout.focus();
	}
	else if (exist_pseudo(form.ident_ajout.value))
	{
		nouveau_txt = document.createTextNode("L'identifiant \"" + form.ident_ajout.value + "\" existe déjà. Veuillez en choisir un autre...");
		form.ident_ajout.focus();
	}
	else if (form.mdp_ajout.value != form.Confirmmdp_ajout.value)
	{
		nouveau_txt = document.createTextNode("Le mot de passe et sa confirmation doivent être identiques.");
		form.mdp_ajout.focus();
	}
	else if (form.nom_ajout.value.length > 50)
	{
		nouveau_txt = document.createTextNode("Le nom de l'utilisateur ne doit pas dépasser 50 caractères.");
		form.nom_ajout.focus();
	}
	else if (form.prenom_ajout.value.length > 50)
	{
		nouveau_txt = document.createTextNode("Le prénom de l'utilisateur ne doit pas dépasser 50 caractères.");
		form.nom_ajout.focus();
	}
	else if (!(try_date.getFullYear() == year && try_date.getMonth() == month && try_date.getDate() == day))
	{
		nouveau_txt1 = document.createTextNode("La date " + form.naissance_ajout.value + " n'existe pas, ou n'a pas le bon format.");
		nouveau_txt2 = document.createTextNode("Format : AAAA-MM-JJ.");
		form.naissance_ajout.focus();
		nouveau_p.appendChild(nouveau_txt1);
		nouveau_p.appendChild(document.createElement("br"));
		nouveau_p.appendChild(nouveau_txt2);
		document.getElementById('texte').insertBefore(nouveau_p, form);
		window.location.href = "#titreAjout";
		erreur = false;
	}
	else
	{
		form.submit();
		erreur = false;
	}
	
	if (erreur)
	{
		nouveau_p.appendChild(nouveau_txt);
		document.getElementById('texte').insertBefore(nouveau_p, form);
		window.location.href = "#titreAjout";
	}
}

/*
	Formulaire de modification
*/

function verifChampsModif()
{
	var form = document.form_modif;
	
	var date_split = form.naissance_modif.value.split("-");
	var year = 1;
	var month = 1;
	var day = 1;
	
	if (date_split.length == 3)
	{
		var year = parseInt(date_split[0]);
		var month = parseInt(date_split[1]);
		var day = parseInt(date_split[2]);
	}
	
	var try_date = new Date(year, month, day);
	
	var nodeList = document.querySelectorAll(".erreur");
	for (var i = 0, length = nodeList.length; i < length; i++) {
		document.getElementById('texte').removeChild(nodeList[i]);
	}
	
	nodeList = document.querySelectorAll(".confirm");
	for (var i = 0, length = nodeList.length; i < length; i++) {
		document.getElementById('texte').removeChild(nodeList[i]);
	}
	
	var nouveau_p = document.createElement('p');
	nouveau_p.className = "erreur";
	var nouveau_txt = document.createTextNode("");
	var erreur = true;

	if (form.ident_modif.value == "" ||
		form.nom_modif.value == "" ||
		form.prenom_modif.value == "" ||
		form.naissance_modif.value == "")
	{
		nouveau_txt = document.createTextNode('Tous les champs doivent être remplis.');
	}
	else if (form.ident_modif.value.length > 50)
	{
		nouveau_txt = document.createTextNode("L'identifiant du compte ne doit pas dépasser 50 caractères.");
		form.ident_modif.focus();
	}
	else if (form.ident_modif.value != form.select_modif.value && exist_pseudo(form.ident_modif.value))
	{
		nouveau_txt = document.createTextNode("L'identifiant \"" + form.ident_modif.value + "\" existe déjà. Veuillez en choisir un autre...");
		form.ident_modif.focus();
	}
	else if (form.mdp_modif.value != form.Confirmmdp_modif.value)
	{
		nouveau_txt = document.createTextNode("Le mot de passe et sa confirmation doivent être identiques.");
		form.mdp_modif.focus();
	}
	else if (form.nom_modif.value.length > 50)
	{
		nouveau_txt = document.createTextNode("Le nom de l'utilisateur ne doit pas dépasser 50 caractères.");
		form.nom_modif.focus();
	}
	else if (form.prenom_modif.value.length > 50)
	{
		nouveau_txt = document.createTextNode("Le prénom de l'utilisateur ne doit pas dépasser 50 caractères.");
		form.nom_modif.focus();
	}
	else if (!(try_date.getFullYear() === year && try_date.getMonth() === month && try_date.getDate() === day))
	{
		nouveau_txt1 = document.createTextNode("La date " + form.naissance_ajout.value + " n'existe pas, ou n'a pas le bon format.");
		nouveau_txt2 = document.createTextNode("Format : AAAA-MM-JJ.");
		form.naissance_ajout.focus();
		nouveau_p.appendChild(nouveau_txt1);
		nouveau_p.appendChild(document.createElement("br"));
		nouveau_p.appendChild(nouveau_txt2);
		document.getElementById('texte').insertBefore(nouveau_p, form);
		window.location.href = "#titreModif";
		erreur = false;
	}
	else
	{
		erreur = false;
		form.submit();
	}
	if (erreur)
	{
		nouveau_p.appendChild(nouveau_txt);
		document.getElementById('texte').insertBefore(nouveau_p, form);
		window.location.href = "#titreModif";
	}
}

function onChangePseudoModif()
{
	var form = document.form_modif;
	var item  = form.select_modif.options[form.select_modif.options.selectedIndex].value;
	
	if (item == "")
	{
		hide_form_modif();
	}
	else if (document.getElementById('compte_modif').style.display == "none")
	{
		show_form_modif();
		remplir(item);
	}
	else
	{
		remplir(item);
	}
}

function hide_form_modif()
{
	var compte_modif = document.getElementById('compte_modif');
	var util_modif = document.getElementById('utilisateur_modif');
	var modifCompte = document.getElementById('modifCompte');
	if (compte_modif)
		compte_modif.style.display = "none";
	if (util_modif)
		util_modif.style.display = "none";
	if (modifCompte)
		modifCompte.style.display = "none";
}

function show_form_modif()
{
	document.getElementById('compte_modif').style.display = "block";
	document.getElementById('utilisateur_modif').style.display = "block";
	document.getElementById('modifCompte').style.display = "block";
}

function remplir (pseudo)
{
	var form = document.form_modif;
	
	var XMLHttpRequestObject = getRequestObject();
	
	if(XMLHttpRequestObject) {
		XMLHttpRequestObject.open("POST", "getContributeur.php", false);
		XMLHttpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		XMLHttpRequestObject.send("pseudo="+pseudo);
		while (!(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200));
		
		if (XMLHttpRequestObject.responseText != "null")
		{
			var infos = extract_infos(XMLHttpRequestObject.responseText);
			
			form.ident_modif.value = infos['pseudo'];
			form.mdp_modif.value = "";
			form.Confirmmdp_modif.value = "";
			form.nom_modif.value = infos['nom'];
			form.prenom_modif.value = infos['prenom'];
			form.naissance_modif.value = infos['date_naissance'];
			form.sexe_modif.value = infos['sexe'];
			form.type_compte_modif.value = infos['etatUser'];
		}
	}
}

function extract_infos (texte)
{
	var data = {};
	var texte_lignes = texte.split("\n");
	for (var i in texte_lignes){
		ligne = texte_lignes[i].split(':');
		if (ligne.length == 2)
		{
			data[ligne[0]] = ligne[1];
		}
		else if (ligne.length == 1)
		{
			data[ligne[0]] = null;
		}
	}
	
	return data;
}

/*
	Formulaire de suppression
*/

function onChangePseudoSuppr()
{
	var form = document.form_suppr;
	var item  = form.select_suppr.options[form.select_suppr.options.selectedIndex].value;
	
	if (item == "")
	{
		hide_infos();
	}
	else
	{
		show_info(item);
	}
}

function hide_infos()
{
	var infos = document.getElementById('infos');
	while (infos.hasChildNodes()) {
		infos.removeChild(infos.lastChild);
	}
	document.getElementById('supprCompte').style.display == "none";
}

function show_info(pseudo)
{
	var infos = document.getElementById('infos');
	while (infos.hasChildNodes()) {
		infos.removeChild(infos.lastChild);
	}
	document.getElementById('supprCompte').style.display == "inline";
	
	var blocInfo = document.getElementById('infos');
	var XMLHttpRequestObject = getRequestObject();
	
	if(XMLHttpRequestObject) {
		XMLHttpRequestObject.open("POST", "getContributeur.php", false);
		XMLHttpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		XMLHttpRequestObject.send("pseudo="+pseudo);
		while (!(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200));
		
		if (XMLHttpRequestObject.responseText != "null")
		{
			var infos = extract_infos(XMLHttpRequestObject.responseText);
			
			blocInfo.appendChild(document.createTextNode("Pseudo : " + infos['pseudo']));
			blocInfo.appendChild(document.createElement("br"));
			blocInfo.appendChild(document.createTextNode("nom : " + infos['nom']));
			blocInfo.appendChild(document.createElement("br"));
			blocInfo.appendChild(document.createTextNode("prenom : " + infos['prenom']));
			blocInfo.appendChild(document.createElement("br"));
			if (infos['sexe'] == "0")
				blocInfo.appendChild(document.createTextNode("sexe : F"));
			else
				blocInfo.appendChild(document.createTextNode("sexe : H"));
			blocInfo.appendChild(document.createElement("br"));
			blocInfo.appendChild(document.createTextNode("date de naissance : " + infos['date_naissance']));
			blocInfo.appendChild(document.createElement("br"));
			blocInfo.appendChild(document.createTextNode("accréditation : " + infos['etatUser']));
		}
	}
}

/*
	Gestionnaire d'évènements
*/

function addListener(element, basename, handler) {
	if (element.addEventListener)
		element.addEventListener(basename, handler, false);
	else if (element.attachEvent)
		element.attachEvent('on' + basename, handler);//for IE
}

function iniEvenements() {
	hide_form_modif();
	hide_infos();
	
	addListener(document.form_ajout.creerCompte, 'click', verifChampsAjout);
	addListener(document.getElementById('modifCompte'), 'click', verifChampsModif);
	addListener(document.form_modif.select_modif , 'change', onChangePseudoModif);
	addListener(document.form_suppr.select_suppr , 'change', onChangePseudoSuppr);
}

addListener(window, 'load', iniEvenements);